GtkThemingEngine: Make render_background use drawing primitives.
authorCarlos Garnacho <carlosg@gnome.org>
Mon, 19 Jul 2010 09:56:01 +0000 (11:56 +0200)
committerCarlos Garnacho <carlosg@gnome.org>
Sat, 4 Dec 2010 14:37:21 +0000 (15:37 +0100)
gtk/gtkthemingengine.c

index d1bca7e21ac5bf5c7ec4acb0bda0c8b57a4c4da1..57452613c6cadac891e8f99468006eb7e34e5f25 100644 (file)
@@ -818,7 +818,7 @@ gtk_theming_engine_render_background (GtkThemingEngine *engine,
 {
   GtkStateFlags flags;
   GtkStateType state;
-  GdkColor *bg_color;
+  GdkColor *color;
 
   cairo_save (cr);
   flags = gtk_theming_engine_get_state (engine);
@@ -830,19 +830,31 @@ gtk_theming_engine_render_background (GtkThemingEngine *engine,
   else
     state = GTK_STATE_NORMAL;
 
-  gtk_theming_engine_get (engine, state,
-                          "background-color", &bg_color,
-                          NULL);
+  if (gtk_theming_engine_has_class (engine, "entry"))
+    gtk_theming_engine_get (engine, state,
+                            "base-color", &color,
+                            NULL);
+  else
+    gtk_theming_engine_get (engine, state,
+                            "background-color", &color,
+                            NULL);
 
-  add_path_rounded_rectangle (cr, 0,
-                              SIDE_BOTTOM | SIDE_RIGHT | SIDE_TOP | SIDE_LEFT,
-                              x, y, width, height);
-  cairo_close_path (cr);
+  gdk_cairo_set_source_color (cr, color);
+  cairo_rectangle (cr, x, y, width, height);
 
-  gdk_cairo_set_source_color (cr, bg_color);
-  cairo_fill (cr);
+  if (gtk_theming_engine_has_class (engine, "tooltip"))
+    {
+      cairo_fill_preserve (cr);
+
+      cairo_set_source_rgb (cr, 0, 0, 0);
+      cairo_stroke (cr);
+    }
+  else
+    cairo_fill (cr);
 
   cairo_restore (cr);
+
+  gdk_color_free (color);
 }
 
 static void